More internationalization changes for Windows.
authorrobertlipe@gmail.com <robertlipe@gmail.com@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Sun, 2 Oct 2011 19:23:42 +0000 (19:23 +0000)
committerrobertlipe@gmail.com <robertlipe@gmail.com@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Sun, 2 Oct 2011 19:23:42 +0000 (19:23 +0000)
git-svn-id: http://gpsbabel.googlecode.com/svn/trunk@4093 f51c46e8-681c-474f-0cfe-069cfd0219fb

gpsbabel/gui/mainwindow.cpp
gpsbabel/gui/mainwindow.h

index ff67d893a959b1e416ca85bfcfe2c23848a1c9ec..4cb1bc05c7d63de4c285ce760f891bbdfb6aef56 100644 (file)
@@ -204,6 +204,10 @@ MainWindow::MainWindow(QWidget* parent): QMainWindow(parent)
 
   ui.outputWindow->setReadOnly(true);
 
+  langPath = QApplication::applicationDirPath();
+#if defined (Q_OS_WIN)
+  langPath.append("/translations/");
+#endif
   // Start up in the current system language.
   loadLanguage(QLocale::system().name());
   createLanguageMenu();
@@ -246,8 +250,6 @@ void MainWindow::createLanguageMenu(void)
     QString defaultLocale = QLocale::system().name();       // e.g. "de_DE"
     defaultLocale.truncate(defaultLocale.lastIndexOf('_')); // e.g. "de"
 
-    langPath = QApplication::applicationDirPath();
-    langPath.append("/translations/");
     QDir dir(langPath);
     QStringList fileNames = dir.entryList(QStringList("GPSBabelFE*.qm"));
 
@@ -284,13 +286,15 @@ void MainWindow::slotLanguageChanged(QAction* action)
   }
 }
 
-void switchTranslator(QTranslator& translator, const QString& filename)
+void MainWindow::switchTranslator(QTranslator& translator, const QString& filename)
 {
   // remove the old translator
   qApp->removeTranslator(&translator);
 
+  QString full_filename(langPath + "/" + filename);
+
   // load the new translator
-  if (translator.load(filename))
+  if (translator.load(full_filename))
     qApp->installTranslator(&translator);
 }
 
@@ -301,15 +305,10 @@ void MainWindow::loadLanguage(const QString& rLanguage)
     QLocale locale = QLocale(currLang);
     QLocale::setDefault(locale);
     QString languageName = QLocale::languageToString(locale.language());
-    // It's baffling to me that this is required.  On Mac, we absolutely do not have to do this.
-#if defined (Q_OS_WIN)
-#define LANGUAGE_DIR "translations/"
-#else
-#define LANGUAGE_DIR ""
-#endif
-    switchTranslator(translator, QString(LANGUAGE_DIR "gpsbabelfe_%1.qm").arg(rLanguage));
-    switchTranslator(translatorCore, QString(LANGUAGE_DIR "gpsbabel__%1.qm").arg(rLanguage));
-    switchTranslator(translatorQt, QString(LANGUAGE_DIR " qt_%1.qm").arg(rLanguage));
+
+    switchTranslator(translator, QString("gpsbabelfe_%1.qm").arg(rLanguage));
+    switchTranslator(translatorCore, QString("gpsbabel__%1.qm").arg(rLanguage));
+    switchTranslator(translatorQt, QString(" qt_%1.qm").arg(rLanguage));
   }
 }
 
index cf1a283c6cfb6a113d0122147c47c40ea6d71822..0f8a2456e6beb5de66f01250954f8b1ed7f70f04 100644 (file)
@@ -53,11 +53,12 @@ private:
   QTranslator     translatorCore; // translation for the core application.
   QTranslator     translatorQt;   // translations for Qt.
   QString         currLang;       // currently loaded language.
-  QString         langPath;       // Path of language files. This is always fixed to /languages. 
+  QString         langPath;       // Absolute path of language files. 
 
 private:
   void loadFormats();
   void loadLanguage(const QString& rLanguage);
+  void switchTranslator(QTranslator&, const QString&);
   void createLanguageMenu();
   QString filterForFormat(int idx);
   QString ensureExtensionPresent(const QString &nanme, int idx);